package com.hicorp.segment.service;

import com.hicorp.segment.pojo.po.MaterialConcrete;
import com.hicorp.segment.pojo.po.Receipts;
import com.hicorp.segment.utils.ResultBean;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author wqs
 * @version 1.0.1
 */
@Service
public interface ReceiptsService {

    /**
     * 查询所有
     *
     * @param tableName 表名
     * @return 查询到的数据
     */
    ResultBean<List<Receipts>> queryInfo(String tableName);

    /**
     * 新增单据
     *
     * @param receipts 新增的数据.
     * @return 新增的单据的主表的id.
     */
    ResultBean<Long> createRecord(String tableName,Receipts receipts,String authorityCode);

    /**
     * 修改单据
     *
     * @param receipts 修改的数据.
     * @return 修改的单据的主表id.
     */
    ResultBean<Long> updateRecord(String tableName,Receipts receipts);

    /**
     * 批量删除
     * @param tableName 表名
     * @param ids id名
     * @return 未修改
     */
    ResultBean<Integer> batchDeleteRecord(String tableName, List<Long> ids);

    // 批量作废
    ResultBean<Integer> batchInvalidRecord(String tableName, List<Long> ids);

    // 按单个字段搜索
    Object selectRecords(String tableName, String fieldName, String fieldValue);

    // 组合搜索
    ResultBean<List<Receipts>> searchRecord(String tableName, Receipts receipts,String queryCode);

    // 生成单据内部编码
    ResultBean<String> generateReceiptsNo(String tableName, String preNo);

    // 查询，通过表名和内部编码来获取主子表数据
    ResultBean<Receipts> selectByTableNameAndNo(String tableName, String no);

    // 远程搜索数据获取，通过表名
    ResultBean<List<MaterialConcrete>> selectAutocompleteInput(String tableName);

    Object boomCreate( String orderId);
}
